package com.xjmall.service;

import com.github.pagehelper.PageInfo;
import com.xjmall.common.ServerResponse;
import com.xjmall.common.ServerResult;
import com.xjmall.vo.OrderVo;

import java.util.Map;

/**
 * 订单管理业务接口
 * Created by An on 2017/7/24.
 */
public interface IOrderService {
    ////////////////////// 后台 ///////////////////////////
    // 未支付订单列表
    ServerResult<PageInfo> manageNopayList(int pageNum, int pageSize);
    // 未发货订单列表
    ServerResult<PageInfo> manageNoShippedList(int pageNum, int pageSize);
    // 已完成交易订单列表
    ServerResult<PageInfo> manageOrderSuccessList(int pageNum, int pageSize);
    // 交易关闭订单列表
    ServerResult<PageInfo> manageOrderCloseList(int pageNum, int pageSize);
    // 订单改价
    ServerResult manageEditActualPayment(Long orderNo, Double editPayment);
    // 订单发货
    ServerResult manageSendGoods(Long orderNo);
    // 获取订单详情
    ServerResult<OrderVo> manageDetail(Long orderNo);
    // 搜索订单
    ServerResult<PageInfo> manageSearch(Long orderNo, int pageNum, int pageSize);

    ////////////////////// 前台 ///////////////////////////
    // 订单支付（对接支付宝）
    ServerResponse pay(String path, Long orderNo, Integer userId);
    // 支付宝回调
    ServerResponse alipayCallback(Map<String, String> params);
    // 查询订单支付状态
    ServerResponse queryOrderPayStatus(Integer userId, Long orderNo);
    // 创建订单
    ServerResponse createOrder(Integer userId, Integer shippingId);
    // 取消订单
    ServerResponse<String> cancel(Integer userId, Long orderNo);

    ServerResponse getOrderCartProduct(Integer userId);
    // 获取订单详情
    ServerResponse<OrderVo> getOrderDetail(Integer userId, Long orderNo);
    // 获取订单列表
    ServerResponse<PageInfo> getOrderList(Integer userId, int pageNum, int pageSize);
}
